/**
 * Dependency Injection is a software design pattern in which one or
 * more dependencies (or services) are injected, or passed by reference, into a
 * dependent object (or client) and are made part of the client's state. The
 * pattern separates the creation of a client's dependencies from its own
 * behavior, which allows program designs to be loosely coupled and to follow the
 * inversion of control and single responsibility principles.
 * <p>
 * 依赖注入模式
 * 依赖注入是一种软件设计模式，其中有一个或者多个依赖被注入，或者在一个依赖的对象内存在一个引用，
 * 这种模式分离了客户端创建对象依赖于本身的行为，低耦合,伴随控制反转和单一职责
 * <p>
 * 使用情形:
 * when you need to remove knowledge of concrete implementation from object
 * 当你不想要对象实现具体方法的时候
 * to enable unit testing of classes in isolation using mock objects or stubs
 * 测试的时候使用mock
 * Created by heqianqian on 2017/6/14.
 */
package com.hqq.behaviour.dependency_injection;